package negocio;

import dal.CampaniaDAL;

import excepciones.AvwException;

import java.util.ArrayList;
import java.util.Date;

import util.Fecha;

/**
 * Clase de las Campanias
 */
public class CampaniaWeb {

    private String camCodigo;
    private String camNombre;
    private Date camFechaDesde;
    private Date camFechaHasta;
    private ArrayList camPlanTarjeta;
    private ArrayList camArticuloCampania;
    private MicrositioWeb micrositioWeb;
    private ArrayList camBanners;

    /**
     * Constructor
     */
    public CampaniaWeb() {
    }


    public CampaniaWeb(String camCodigo) {
        this.camCodigo = camCodigo;
    }

    /**
     * Constructor
     */
    public CampaniaWeb(String camCodigo, String camNombre, Date camFechaDesde, 
                       Date camFechaHasta, ArrayList camPlanTarjeta, 
                       ArrayList camArticuloCampania, ArrayList camBanners, 
                       MicrositioWeb micrositioWeb) {
        this.setCamArticuloCampania(camArticuloCampania);
        this.setCamBanners(camBanners);
        this.setCamCodigo(camCodigo);
        this.setCamFechaDesde(camFechaDesde);
        this.setCamFechaHasta(camFechaHasta);
        this.setCamNombre(camNombre);
        this.setCamPlanTarjeta(camPlanTarjeta);
    }


    /**
     * Verifica si la fecha actual se encuentra dentro del intervalo 
     * de fechas determinado por fecha_desde y fecha_hasta.
     * @return True: la campania esta vigente
     *         False: la campania no esta vigente
     */
    public Boolean esVigente() {
        Date actual = new Date();
        if (Fecha.esMayor(actual,this.getCamFechaDesde()) && 
            Fecha.esMayor(this.getCamFechaHasta(),actual)) {
            return Boolean.TRUE;
        }
        
        return Boolean.FALSE;
    }

    /* Metodos sets y gets */

    public String getCamCodigo() {
        return camCodigo;
    }

    public void setCamCodigo(String camCodigo) {
        this.camCodigo = camCodigo;
    }

    public String getCamNombre() {
        return camNombre;
    }

    public void setCamNombre(String camNombre) {
        this.camNombre = camNombre;
    }

    public Date getCamFechaDesde() {
        return camFechaDesde;
    }

    public void setCamFechaDesde(Date camFechaDesde) {
        this.camFechaDesde = camFechaDesde;
    }

    public Date getCamFechaHasta() {
        return camFechaHasta;
    }

    public void setCamFechaHasta(Date camFechaHasta) {
        this.camFechaHasta = camFechaHasta;
    }

    public ArrayList getCamPlanTarjeta() {
        return camPlanTarjeta;
    }

    public void setCamPlanTarjeta(ArrayList camPlanTarjeta) {
        this.camPlanTarjeta = camPlanTarjeta;
    }

    public ArrayList getCamArticuloCampania() {
        return camArticuloCampania;
    }

    public void setCamArticuloCampania(ArrayList camArticuloCampania) {
        this.camArticuloCampania = camArticuloCampania;
    }

    public ArrayList getCamBanners() {
        return camBanners;
    }

    public void setCamBanners(ArrayList camBanners) {
        this.camBanners = camBanners;
    }

    public MicrositioWeb getCamMicrositioWeb() throws AvwException {
        if (micrositioWeb == null){
            micrositioWeb = CampaniaDAL.obtenerMicrositioDeCampania(this);
        }
            
        return micrositioWeb;
    }

    public void setCamMicrositioWeb(MicrositioWeb micrositioWeb) {
        this.micrositioWeb = micrositioWeb;
    }
}
